package com.binance.assetservice.api;

import java.util.List;

import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;

import com.binance.assetservice.vo.request.symbolrealtime.GetClosePriceRequest;
import com.binance.assetservice.vo.response.symbolrealtime.GetClosePriceResponse;
import com.binance.master.configs.FeignConfig;
import com.binance.master.constant.Constant;
import com.binance.master.models.APIRequest;
import com.binance.master.models.APIResponse;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;

@Api
@FeignClient(name = Constant.ASSET_SERVICE, configuration = FeignConfig.class)
public interface ISymbolRealtimeApi {

    // public APIResponse<Double> getVolume(@RequestBody APIRequest<SymbolRealtimeRequest> request);
    //
    // public APIResponse<Double> getTurnOver(@RequestBody APIRequest<SymbolRealtimeRequest>
    // request);
    //
    // public Long getLastAggTradeId(@RequestBody APIRequest<SymbolRealtimeRequest> request);
    //
    // public APIResponse<Double> getActiveBuy(@RequestBody APIRequest<SymbolRealtimeRequest>
    // request);
    //
    // public APIResponse<Double> getActiveSell(@RequestBody APIRequest<SymbolRealtimeRequest>
    // request);
    //
    // public JSONObject getTicker(@RequestBody APIRequest<SymbolRealtimeRequest> request);
    //
    // public APIResponse<Double> getOpen(@RequestBody APIRequest<SymbolRealtimeRequest> request);
    //
    // public APIResponse<Double> getLow(@RequestBody APIRequest<SymbolRealtimeRequest> request);
    //
    // public APIResponse<Double> getHigh(@RequestBody APIRequest<SymbolRealtimeRequest> request);

    @ApiOperation("获取产品最小价格，如果请求参数为空则返回所有的产品的最新价格")
    @PostMapping(value = "/symbolrealtime/close")
    public APIResponse<List<GetClosePriceResponse>> getClose(@RequestBody APIRequest<GetClosePriceRequest> request);

    // public APIResponse<Long> getRefreshTime(@RequestBody APIRequest<VoidBody> request);
}
